from pydantic import BaseModel
from typing import IO, Dict, Any, Optional


class FilePayload(BaseModel):
    """
    一个清晰的数据结构，用于在批量处理时传递文件信息。
    """
    file_format: str  # e.g., "pdf", "docx", "png"
    # 关键修复: 将类型从严格的 IO[bytes] 改为通用的 Any，
    # 以兼容 FastAPI 的 SpooledTemporaryFile 等行为类似文件但类型不同的对象。
    file_stream: Any
    metadata: Optional[Dict[str, Any]] = None  # (可选) 与该文件关联的元数据

    class Config:
        # 告诉 Pydantic，我们允许在这个模型中使用任意类型。
        arbitrary_types_allowed = True 